home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 026a / formnew.zip / FORMNEW.GEN < prev   
Text File  |  1990-08-30  |  23KB  |  362 lines

  1.  
  2. Format (.fmt) File Template with POPUP field validation
  3. -------------------------------------------------------
  4. Version 1.1.19
  5. (  Subversion 1.  Modified by B. Flynn  8/3/90 - SIG ID BFlynn
  6.    Changes: * If DOS variable DTL_REQUIRED exists and is set to ASK,
  7.               ask user if REQUIRED should be inserted.  If DTL_REQUIRED is
  8.               set to anything else, automatically insert REQUIRED w/o
  9.               asking. (ex. SET DTL_REQUIRED=ON)
  10.             * Ignore 1x1 memo boxes (allows user to open
  11.               memo marker to full-screen edit mode).
  12.             * No KEYBOARD reference in lookup program for character fields.
  13. )
  14. Ashton-Tate (c) 1987, 1988, 1989, 1990
  15. Written by Kirk J. Nason & Bill Ramos
  16.  
  17. This template will support POPUPs for VALID clause field validations and
  18. context sensitive help for each field.
  19.  
  20. Example: In "ACCEPT value when" under "Edit options" enter,
  21.         "POPUP" = "vendor->vendor_id ORDER vendor_id REQ SHADOW"
  22.         --------------------------------------------------------
  23.         this will activate a popup if the data entered is invalid for
  24.         that field and will also make the field REQUIRED.
  25.  
  26. Explanation of the POPUP string follows:
  27.  
  28. POPUP              Indicates that a popup will be used for this field.
  29. vendor->vendor_id  Indicates the .DBF to open and FIELD to use as validation.
  30. ORDER vendor_id    Indicates which INDEX TAG to SEEK in.
  31. REQ                Indicates the FIELD requires data (can't be empty).
  32.                    Leave REQ out if the field is NOT required.      OPTIONAL!
  33. SHADOW             Use shadowing effect on popups                   OPTIONAL!
  34. NOTE: The POPUP string must be entered with the quotes as in the example.
  35.  
  36. --------------------------------------------------------------------------------
  37.  
  38. Explanation of the Context Sensitive Help file follows:
  39.  
  40. If you want to create your own help file, here is the structure that is required.
  41.  
  42. Structure for Help Database (.dbf):
  43. <first 6 chars. of the format file name>_H.dbf
  44.  
  45. Field   Field Name  Type        Width  Dec   Tag
  46. -------------------------------------------------
  47.     1   FLD_NAME    Character     10         Yes  Field name to lookup on F1
  48.     2   FLD_HEADNG  Character     25          No  Heading to show user on window
  49.     3   FLD_HELP    Memo          10          No  Help text to show user
  50. -------------------------------------------------
  51.         Total                     46
  52. ε¡└    (xLZ▐»╛∩@Oñ:.
  53. @Oñ::@TD;86 @U{;(=8m@Vÿ;8n@W¬; ;@W¬;@Y┤;.`
  54. @Y┤;:@]I<8m@^f<8n@_z< ;@_z<@aä<.╙
  55. @aä<:@d∞<6└
  56. @e=8; 8< 8?@f/= >@f/=@g9=;@hK=<@hK=@jU=.T @jU=:@o└=>@o└=@p┌=5= 80 8n@r>. @r>@s><@t><@t>@v%>.¬ @v%>:@xè>8< 8= 8< 8>@y═> ;<@y═>@{╫>.≈ @{╫>:@}:?/█ .ε @}:?@}:?;@~Z?<@~Z?@K▓╡ 1k @L÷    :Can't use FORM.GEN on non-form objects.  Press any key ...8N@M.╔@N%@si    @u╓     
  57. 80@vτ @w≤     @x
  58. @y&@{R    "9@┬9#E /╔@é     DTL_REQUIRED8g 8=     ASK2Ω@â;@äI    FWould you like the REQUIRED keyword after all VALID and RANGE options?    Y8X @à~8=     YN8. /;@å┬8=     N2▀    @å┬@ê.@ê     DTL_REQUIRED8g /    R@ê@ëQ@ï]94@î¥9Φ@ì▄9┤@Ä9₧!@ÅG9⌠&@ÉÖ9M3@Æ▀ 2┤@ô≥    )Form design was empty.  Press any key ...8N@ö@ò    .FMO8{@û8@ùA;@₧╙.ó@₧╙:
  59. *-- Format file initialization code --------------------------------------------
  60.  
  61. *-- Some of these PRIVATE variables are created based on CodeGen and may not 
  62. *-- be used by your particular .fmt file
  63. PRIVATE lc_talk, lc_cursor, lc_display, lc_status, lc_carry, lc_proc,;
  64.         ln_typeahd, gc_cut
  65.  
  66. IF SET("TALK") = "ON"
  67.    SET TALK OFF
  68.    lc_talk = "ON"
  69. ELSE
  70.    lc_talk = "OFF"
  71. ENDIF
  72. lc_cursor = SET("CURSOR")
  73. SET CURSOR ON
  74. @│▀    439\9 8. /#
  75. *-- This form was created in @╡9\9 ? mode
  76. lc_display = SET("display")
  77. IF .NOT. "43" $ lc_display                             && In 25 line mode
  78.    IF "EGA" $ lc_display
  79.       *-- If EGA is in lc_display try EGA43
  80.       SET DISPLAY TO EGA43                     
  81.    ELSE
  82.       *-- Otherwise try MONO43
  83.       SET DISPLAY TO MONO43
  84.    ENDIF
  85. ENDIF
  86. @┴û
  87. lc_status = SET("STATUS")
  88. *-- SET STATUS was @┼╥/╛ON when you went into the Forms Designer.
  89. IF lc_status = "OFF"
  90.    SET STATUS ON
  91. @╔:.@╔:OFF when you went into the Forms Designer.
  92. IF lc_status = "ON"
  93.    SET STATUS OFF
  94. @͖ENDIF
  95. @╙| j@╘ù 8F @╘ù 8I 0o9┘H@╒¬ X/ä,>@╒¬ @╓ß @80     M2`¬/`@╫$!6`Ñ5▄ñ4`@╪y!@┘è!,    wndow    ,
  96. *-- Window for memo field @▄╟!=9f  ?.
  97. DEFINE WINDOW @▌■!9ª@ ?@▐""@▀,",.I@▀,"@α8"8B@Γ["/■
  98. lc_carry = SET("CARRY")
  99. *-- Fields to carry forward during APPEND.
  100. SET CARRY TO @µÑ"9<C ?
  101.  
  102. @Φ┼"@Ω╤"9ëG@δε" /╗
  103. ON KEY LABEL F2 ?? chr(7)
  104.  
  105. lc_proc = SET("procedure")                       && Store procedure file name
  106. SET PROCEDURE TO u_@≡_#(8< ?
  107.  
  108. @≥ê#@≤ö#9:H@⌠│# /Æ0blc_proc = SET("procedure")                       && Store procedure file name
  109. SET PROCEDURE TO u_@÷$(8< ?
  110. @≈E$ON KEY LABEL F1 DO Help WITH VARREAD()
  111. @∙}$@·ë$<@ⁿ¼$<@ⁿ¼$@ °$.î!@ °$:
  112. *-- @ SAY GETS Processing. -----------------------------------------------------
  113.  
  114. *--  Format Page: @è%
  115. 
  116. ?
  117. @├%    Φ@    ╫%8F @    ╫%8I 0u!½W9Y:@
  118. & 9┘H@ 7& /╓READ
  119.  
  120. *-- Format Page: @B&
  121. ?
  122.  
  123. @a&@q&=1²j2▌@╗&?2X*-- Calculated field: @Γ&=9f  ? - L?
  124. @%'@1'?2Ñ*-- Memory variable: @Z'=9f  ?
  125. @ï'@ @ÿ'ß9╝      ?,]9╝  ? @╓'@α'>2@ @  (9QA ?@!%(@#4(.'!@$M(SAY @+£)_8-  6π@,┐)_86 2ÉCHR(@-σ)_8- ?) @.■).╪@.■)REPLICATE(CHR(@/*_8- ?), _86 ?) @0C*@2^*.^@2^*_8<     "2*@6)+    [@7L+    ]>@7L+@8\+_? @:╚+    ">@:╚+@;╒+9≥? ?@<Φ+.J!@<Φ+@=·+áí93? ?@>&,9≥? ?@?:,.J!@?:,@@L,W0ΘSAY @B,?2I@DΘ,M@E-8F @E-8I 04M?@F:-,.@F:- @J┼-.Ñ@J┼-?2j     .ü@J┼-    m-> @J┼-@K.>=9f  ? @LD.@MT.9¬6 /▐PICTURE "@Nv.9H&" @OÖ.@P⌐..Θ @P⌐.GET @R╦.?2     ..@R╦.    m-> @R╦.@S/>=9f  ? @TA/@80     M2°@Ux/¬/°Ñ5ùñ4°@V╒/6╖,>@V╒/@W0¬2▄OPEN @W0WINDOW wndow? @XM0@Y]09¬6 /1PICTURE "@Z09é%" @[ó0@\▓0O0NP/╣@\▓0;
  126.    RANGE @_1/èREQUIRED @_1O?P/»,P?@_1 @`}1@aì1S/╨;
  127. @c╛1    POPUPS87 8= 8.     22╙@d2    7Picklist coordinates exceed column 79 - move field left9'7 /╙   VALID @i≥2S9╔M 0â/£@i≥2REQUIRED @i≥2@j;3=9ÇM ?( =9f  ? ) @mÉ3.B@mÉ3    POPUPS87 8= 8.     21;   VALID @o▌3/)REQUIRED @o▌3S? @q@r24@tG4T/╔;
  128.    ERROR @wx4    IIFT8= 8. 0î"@wx4T?@x┴4    IIFT8= 8. 0┐"@x┴4 @y■4@z5@{05R/ ;
  129.    WHEN @}a5R? @}5@Çì5Q/Q ;
  130.    DEFAULT @é╛5Q? @â┌5@äΩ5c/Γ ;
  131.    MESSAGE @ç)6    IIFc8= 8. 0Ñ "@ç)6c?@êo6    IIFc8= 8. 0╪ "@êo6 @ë⌐6@è╣6@î┘69≥? ?@ì∞6@Ä7.J!@Ä7._!@Å7.J!@Å77=)>~j║.!@Å7
  132. @ûÑ7 ,@ù░7@ÿ╜7,.i@ÿ╜7@Ö╞7<@¢Θ7<@¢Θ7@₧58.p%@₧58:*-- Format file exit code -----------------------------------------------------
  133.  
  134. *-- SET STATUS was @ú╣8/├"ON when you went into the Forms Designer.
  135. IF lc_status = "OFF"  && Entered form with status off
  136.    SET STATUS OFF     && Turn STATUS "OFF" on the way out
  137. @ºk9.j#@ºk9OFF when you went into the Forms Designer.
  138. IF lc_status = "ON"  && Entered form with status on
  139.    SET STATUS ON     && Turn STATUS "ON" on the way out
  140. @½:ENDIF
  141. @¡:/ƒ#
  142. SET CARRY &lc_carry.
  143. @░J:SET CURSOR &lc_cursor.
  144. SET TALK &lc_talk.
  145. @│:    439\9 8. //$SET DISPLAY TO &lc_display.      && Reset Screen size if changed
  146. @╡σ:@╢ε:/}$
  147. RELEASE WINDOWS @╕;86 < ?
  148. @╣C;
  149. RELEASE @╗N;/¿$lc_carry,@╗N;lc_talk,lc_fields,lc_status
  150. @╝û;/ε$
  151. ON KEY LABEL F1
  152. @┐└;@└╠;0%/?%@└╠;ON KEY LABEL F2
  153.  
  154. SET PROCEDURE TO (lc_proc)
  155. @─<*-- EOP: @┼+<83 ?FMT
  156. @╞M<<@╚q<<@╚q<@╦╜<.6&@╦╜<:@╠╪<Kü/▄%@Kü?@═=    SKü8. /╥%╖ü?@═= @╧^=@╨m=    MKü8.@╤æ= /&┤ü?@╙╕=.&&@╙╕=Jü?@╘╥=@╒▐=<@╓Φ=<@╓Φ=@┘4>.Γ&@┘4>:@┌O>Kü/ó&@Kü?@█{>    SKü8. /ÿ&╖ü?@█{> @▌╒>@▐Σ>    MKü8. 0╥&@▀    ?Jü?@α#?@ß/?<@Γ9?<@Γ9?@σà?.;3@σà?:@ΦΩ?/+39êF 0*'@Θ
  157. @;@Ω#@@δ4@9"5@∞L@ ?FUNCTION Empty                && Determine if the passed argument is NULL
  158. PARAMETER x
  159.   mtype = TYPE("x")
  160.   DO CASE
  161.     CASE mtype = "C"
  162.       retval = (LEN(TRIM(x))=0)
  163.     CASE mtype$"NF"
  164.       retval = (x=0)
  165.     CASE mtype = "D"
  166.       retval = (" "$DTOC(x))
  167.   ENDCASE
  168. *-- EOP: empty
  169. RETURN (retval)
  170.  
  171. @²ªA    @ └A
  172. j@µA8F @µA8I 0·2    POPUPS87 8= 8.     22ß(.⌠(@µA@µA@8B9┘H@vB/δ2ß9╝  @╣B    ]9╝ @±B ½W9Y:@    LC     9'7 /δ2@ ÿC    -N8V    * 8BFUNCTION @╤C=9ÇM ?
  173.   PARAMETER fld_name
  174.   PRIVATE ALL LIKE ??_*
  175.   PRIVATE esckey, fld_name, rtn_fld
  176.   ll_return = .F.
  177.  
  178. @aDS9╔M 0╓*  IF empty(fld_name)                   && Not a required fiel cur.FLD_TEMPLATE
  179.      RETURN (.T.)                       && if null field
  180.   ENDIF
  181.  
  182. @.E  EscKey = 27                          && 27 represents the ESC key
  183.  
  184.   lc_alias = ALIAS()                   && Grab current workarea
  185.   SELECT SELECT()
  186.   USE @µES9'J ? ORDER S9╠J ? AGAIN
  187.  
  188.  
  189.   lc_exact = SET("EXACT")              && Store value of EXACT
  190.   SET EXACT ON
  191.  
  192. @#~F@80     C2d,  fld_name = IIF( EMPTY( TRIM( fld_name)), fld_name, TRIM( fld_name))
  193. @%■F  SEEK fld_name
  194.  
  195.   SET EXACT &lc_exact.                 && Restore SET EXACT to org. value
  196.   IF .NOT. FOUND()
  197.  
  198.       DEFINE POPUP @+ÄGS9gL ? FROM @,─G6y-@-±G?,? ;
  199.         TO @. H?,J86 ? ;
  200. @0rH.╪-@0rH ?,? ;
  201.         TO @1óH?,J86 ? ;
  202. @2ΦH        PROMPT FIELD @3·HS9╡K ? ;
  203.         MESSAGE @4+I    5[Select: ]+CHR(17)+CHR(196)+CHR(217)+[   Cancel: Esc]?
  204.  
  205.       ON SELECTION POPUP @6LIS9gL ? DEACTIVATE POPUP
  206.  
  207.       SAVE SCREEN TO temp
  208. @=NJS9|N /\/@>üJ    5Shadow coordinates exceed column 79 - move field left9'7 /\/      DO shadowg WITH @@╩JJ9╡L
  209.  
  210. @BK      ACTIVATE POPUP @D!KS9gL ?
  211.  
  212.       rtn_fld = PROMPT()                         && Get user choice from Piclist
  213.  
  214.       RELEASE POPUP @H¿KS9gL ?
  215.  
  216.       RESTORE SCREEN FROM temp
  217.  
  218.       IF LASTKEY() <> EscKey
  219.         @ @ML?,? GET rtn_fld @NOL9¬6 /║0PICTURE "@OtL9é%" @PÜL9≥? ?@Q│L
  220.         CLEAR GETS
  221.  
  222.         REPLACE @U▄L<9f  ?->=9f  ? WITH @V*M@80     C2?1rtn_fld
  223. @XaM.\1@XaMVAL(rtn_fld)
  224. @ZM
  225.         ll_return = .T.
  226.       ELSE
  227.         ll_return = .F.
  228. @`╙MS9╔M 002        IF EMPTY(fld_name)               && Not a required field, so return
  229.           ll_return = .T.
  230.         ENDIF
  231.  
  232. @gëN      ENDIF
  233.  
  234.   ELSE
  235.       ll_return = .T.
  236.   ENDIF
  237.  
  238.   USE
  239.   SELECT (lc_alias)                    && Go back to the edit file
  240.  
  241. *-- EOP: @r-O=9ÇM ?
  242. RETURN (ll_return)
  243.  
  244. @vmO@wâO,.¿(@wâO@xÿO    -N8V    * 8B
  245. @z╔O@{╒O<@}²O<@}²O@ÇIP.∩3@ÇIP:@å+Q/╖30ñ3@çEQ9êF 0æ3@êbQ;@ëxQ@ïºQ9"5@î╝Q@Ä≤Q9Q@ÅR@É R0╠3/▀3@ÆFR95O@ô^R@öeR<@ònR<@ònR@ÿ║R.5@ÿ║R:@ÜδR    *P8V 8B*-- Name.......: @¢S83 ?FMT
  246. *-- Date.......: @£>S8M 8< 87 ?
  247. *-- Version....: dBASE IV, Format @¥nSû?.1
  248. *-- Notes......: Format files use "" as delimiters!
  249. @ƒ╘S    *P8V 8B@áⁿS<@áⁿS@úHT.ÿ6@úHT:@ÑüT    -N8V    * 8B*-- Name....: @ª¬T*?u_(8< 88 ?.PRG
  250. *-- Date....: @ºσT8M 8< 87 ?
  251. *-- Version.: dBASE IV, Procedure for Format @¿Uû?.1
  252. *-- Notes...: Procedure file for VALID POPUPs and/or Context Sensitive Help
  253. *-- ........: for @¬ÖU83 ?FMT
  254. @½─U    -N8V    * 8B@¼ΘU<@¼ΘU@»5V.7@»5V:@░NVJü/7@ü80     D17@▒ÅV@ü80     M17@▓╙V;@┤±V;@╢W<@╢W@╣\W.    8@╣\W:@┐ⁿX]ü9╝  Jü86 P4⌠7@┴kY/τ79σ
  255. @ªY8o@üY
  256. =ü    Error on Field: =9╦    @─■Y 9╦    @┼"Z    Press any key ...8N@╞=Z@╟LZ;@╔jZ;@╦ëZ<@╦ëZ@╬╒Z.J9@╬╒Z:@╨%[8k@╤E[ 4v8@╙x['@╘æ[$@╒Ü[.ú8@╒Ü[@╓│[@╫╩[@╫╩[@┌\>'8k@█>\ 2∙80∙8@▌\@▐ù\>@▐ù\@▀í\'2:90:9@ß≤\*@Γ ]'>@Γ ]@π]<@Σ!]<@Σ!]@τm].G:@τm]:@Ω╟].:@δ▄]@∞·]    MONO.-:@∞·]@φ^    COLOR.-:@φ^@ε8^    EGA25.-:@ε8^@∩X^    MONO43.-:@∩X^@≡w^    EGA43.-:@≡w^7{9û9▓9╬9δ9@≡w^@±à^;@≥ÿ^<@≥ÿ^@⌡Σ^.!?@⌡Σ^:@a    @AaÇ!@ea!!0╜:@ªa!/╛:@ªa@    ╩ap!@
  257. Ωa!@ b!@0b!0    ?@{b/8;>@{b@░b1|<1|<@σb.(<@²b@c    n.j<@c@1c    b.j<@1c@Kc    g.j<@Kc@fc    bg.j<@fc@Çc    r.j<@Çc@¢c    rb.j<@¢c@╢c    gr.j<@╢c@╨c    w.j<@╨c7l;ä;£;┤;═;σ;■;<@╨c@Ωc.Ö<@Ωc@d    w>@d@!!d/┴<@"Ad    i>@"Ad@$ad/Θ<@%üd    u>@%üd@'ód/=@(┬d    +>@(┬d@*▀d/9=@+ d    *>@+ d@/+e    /1º>1º>@0`e.S>@1ye@2¥e    n.ò>@2¥e@3┴e    b.ò>@3┴e@4σe    g.ò>@4σe@5
  258. f    bg.ò>@5
  259. f@6.f    r.ò>@6.f@7Sf    rb.ò>@7Sf@8xf    gr.ò>@8xf@9£f    w.ò>@9£f7w=ô=»=╦=Φ=>!>>>@9£f@;╢f.╚>@;╢f@<╓f    n>@<╓f@>πf/?/?@?g    ,@@1g>@@1g@B>g@CWg8T ;@Drg<@Drg@G╛g.α?@G╛g:@Lüh.º?@MÆh@N│h     .╞?@N│h@O╤h     DOUBLE .╞?@O╤h     CHR(@P≈h    ) .╞?@P≈h7R?j?ë?@P≈h@Qi;@Ri<@Ri@Ubi.ö@@Ubi:@X╢i    @Y╞i86 4ü@@\3j/S@    ;8U@][j >@][j@^gj    COLOR @_ûj     >@_ûj@`ƒj;@a▒j<@a▒j@d²j.?A@d²j:@gGk    wndow     FROM 9QA@hêk áüíü93?@i╔k ½üWü9Y:@jl 9≥?@k"l ;@l5l<@l5l@oül.*C@oül:@r!m
  260. @uåmúü9╝  @v╠m5½A@w≡m.hA@w≡m@x·m
  261. 2▌A@z+n>@z+n@{5n
  262. 2B@}fn>@}fn@~pn01B@Ç¢n@üñn.[B@üñn@éαn@éαn@ä∞n>úü9╝  @ào    ,óü9╝  @åUo     TO úü9╝  Ñü@çûo  4µB >@çûo@ê╩o     ,óü9╝  ñü@ëp;@è-p<@è-p@ìyp.E@ìyp:@É╙p@æτpj@Æq8F @Æq8I 0ΣD@ôqX/╒D=    ,86@öXq =    ,86@òòq Φ4#D@û╣q    SET CARRY TO 8B@ÿr>@ÿr@ÖrK4WD    ;      8B>@Ör@Ülr=9f @¢ûr  0ÑD@£╡r 8B@₧δr@ƒ·r.╞D@ƒ·r    , 8B@ás @ás@í)s>@í)s@ó6s,.âC@ó6s@úEs         ADDITIVE8B@ñ^s<@Ñhs<@Ñhs@⌐╢s.vF@⌐╢s:@½÷s 8l@¼<t @¡t*(8Y 0├E@«át0ÅE@░╓t(@▒Γt.┤E@▒Γt    :@▓u(@▓u@│u>@│u@┤'u8=@╡Fu     .FMT8C 0aF@╢nu82     .FMT    - can't be opened - possible read-only file.      Press any key ...8N@╖»u;@╕┬u@╣╬u;@║▄u<@║▄u@╜(v.wG@╜(v:@└îv*    u_(8< 88@┴╥v     .PRG8C 0EG@┬w    .PRG    - can't be opened - possible read-only file.      Press any key ...8N@├Gw;@─Xw@╞ïw    .DBO8{@╚√w;@╔    x<@╔    x@╠Ux.(H@╠Ux:@╬ƒxj@╧╣x8F @╧╣x8I 0H    POPUPS87 8= 8.     22 G@╤    y.H@╥y@╙!y,.╡G@╙!y@╘,y;@╒>y<@╒>y@╪èy.╟H@╪èy:@█z82 8<* @▌Wz    _H    .DBF8W /┤H    .DBT8W /┤H@▀┘z>@▀┘z@απz;@ß⌠z<@ß⌠z@Σ@{.MI@Σ@{:@µ╝{ßü9╝      48I@τ°{        @Φ$|
  263. ,@Θ7|;@ΩH|@δR|;@∞]|<@∞]|@∩⌐|.J@∩⌐|:@≈S~8= 8.@°~ 2¡I@·╡~    ;@√╧~@²▌~<@■
  264.  @ (86 @W86@y 8<@É ;@╕<@╕@ ╒Ç.║J@ ╒Ç:@dé    ->@xé    =9_I@╩é 8/@â 8.@Vâ <@úâ 9f  ;@┼â<@┼â@!ä.úK@!ä:@)Yà    ORDER 9_I@*ªà      8.@+╚à 2ZK@,Σà86 <@-.å @.9å.ëK@.9å<@/på @/på@0|å>9f  ;@1ƒå<@1ƒå@4δå.UL@4δå:@<:ê    ->@=aê9_I@>¬ê      8.@@╬ê 2L.9L@@╬ê< @@╬ê@B!ë9f  ;@CCë<@CCë@FÅë.úL@FÅë:@H╔ë9╡K 8<    u_ 8> ;@Iè<@Iè@LZè.nM@LZè:@M¼è6M@N╘è?,?,?,86 ?
  265. @P9ï.^M@P9ï ?,?,?,86 ?
  266. @Qÿï@Rñï<@S▓ï<@S▓ï@V ï.╖M@V ï:@X5î8<    u_ 9f  ;@Ylî<@Ylî@\╕î.jN@\╕î:@^$ì     REQ 8= 8. /√M.N@^$ì@^$ì0_N@_bì     REQ"8= 8. /:N.MN@_bì@_bì@`£ì/`N@`£ì;@a¼ì<@a¼ì@d°ì.#O@d°ì:@fOÄ     SHADOW 8= 8. /▒N.─N@fOÄ@fOÄ0O@gÉÄ     SHADOW"8= 8. /≤N.O@gÉÄ@gÉÄ@h═Ä/O@h═Ä;@i▌Ä<@i▌Ä@l)Å.⌠P@l)Å:@npÅ    -N8V    * 8BPROCEDURE Shadowg                       && displays shadow that grows
  267.   PARAMETER x1,y1,x2,y2
  268.   PRIVATE   x1,y1,x2,y2
  269.  
  270.   x0 = x2+1
  271.   y0 = y2+2
  272.   dx = 1
  273.   dy = (y2-y1) / (x2-x1)
  274.   DO WHILE x0 <> x1 .OR. y0 <> y1+2
  275.      @ x0,y0 FILL TO x2+1,y2+2 COLOR n+/n
  276.      x0 = IIF(x0<>x1,x0 - dx,x0)
  277.      y0 = IIF(y0<>y1+2,y0 - dy,y0)
  278.      y0 = IIF(y0<y1+2,y1+2,y0)
  279.   ENDDO
  280.  
  281. RETURN
  282. *-- EOP: shadowg
  283. @ü0æ<@é>æ<@é>æ@àèæ.=Z@àèæ:PROCEDURE Help
  284. @ë╙æ8P ?*-- Activates the HELP window
  285. PARAMETER lc_var
  286. PRIVATE ALL LIKE ??_*
  287. SET CURSOR OFF
  288.  
  289. *-- Select workarea and open Help dbf
  290. lc_area = ALIAS()
  291. SELECT SELECT()
  292. USE @ÆìÆ82 ? ORDER fld_name NOUPDATE   && Open HELP .dbf
  293.  
  294. SEEK lc_var
  295. IF FOUND()                             && If found show Help
  296.   ln_t = 5
  297.   ln_l = 6
  298.   ln_b = 15
  299.   ln_r = 74
  300.   ON KEY LABEL F3 DO Toggle
  301.   DEFINE WINDOW z_help FROM ln_t+1, ln_l+2 TO ln_b-1, ln_r-2 NONE
  302.   ON ERROR lc_error=error()
  303.   SAVE SCREEN TO zz_help
  304.  
  305.   *-- Make Help Box
  306.   DO shadowg WITH ln_t, ln_l, ln_b, ln_r
  307.   @ ln_t+1, ln_l+1 CLEAR TO ln_b-1, ln_r-1
  308.   @ ln_t, ln_l TO ln_b, ln_r DOUBLE
  309.  
  310.   ln_memline = SET("MEMO")
  311.   SET MEMOWIDTH TO 65
  312.   IF MEMLINES(fld_help) > 9
  313.     @ ln_t+1,ln_r SAY CHR(24)
  314.     @ ln_b-1,ln_r SAY CHR(25)
  315.   ENDIF
  316.   lc_string = CHR(185)+ [ Help for ] + TRIM(fld_headng) +[ ] + CHR(204)
  317.   lc_message = IIF(MEMLINES(fld_help) > 9, ;
  318.                   "@¼ïò    NScroll thru Help: Ctrl-Home   Exit Viewing Help: Esc   See Original Screen: F3?", ;
  319.                   "@¡╗ò    See Original Screen: F3?" ;
  320.                   )
  321.  
  322.   @ ln_t,CENTER(lc_string,80) SAY lc_string
  323.   @ 0,0 GET fld_help OPEN WINDOW z_help MESSAGE lc_message
  324.   READ
  325.   SET MEMOWIDTH TO ln_memline
  326.   ON ERROR
  327.   ON KEY LABEL F3
  328.   RELEASE WINDOW z_help
  329.   RESTORE SCREEN FROM zz_help
  330.   RELEASE SCREEN zz_help
  331. ENDIF
  332. SET MESSAGE TO
  333. SET CURSOR ON
  334. USE                                              && Close help file
  335. SELECT (lc_area)                                 && Back to edit work area
  336. @╛¡ù8P ?RETURN
  337. *-- EOP: HELP
  338.  
  339. @┬╓ù    -N8V    * 8BPROCEDURE Toggle
  340. @─ÿ8P ?*-- Toggles the Help message back to the original screen
  341. SAVE SCREEN to Toggle
  342. RESTORE SCREEN FROM zz_help
  343. SET MESSAGE TO "Press any key..."
  344. mwait = INKEY(15)
  345. RESTORE SCREEN FROM Toggle
  346. RELEASE SCREEN Toggle
  347. SET MESSAGE TO "Scroll thru Help: Ctrl-Home   Exit Viewing Help: Ctrl-End   See Org. Screen: F3"
  348. @═`Ö8P ?RETURN
  349. *-- EOP: Toggle
  350.  
  351. @╤ïÖ    -N8V    * 8BFUNCTION Center
  352. *-- UDF to center a string.
  353. *-- lc_string = String to center
  354. *-- ln_width = Width of screen to center in
  355. *--
  356. *-- Ex. @ 15,center(string,80) say string
  357. *-- Will center the <string> withing 80 columns
  358. PARAMETER lc_string, ln_width
  359. RETURN ((ln_width/2)-(LEN(lc_string)/2))
  360. @█▄Ü<@▄µÜ<@▄µÜ@<-formnew.cod:ï
  361. form.def;┤
  362. builtin.def